package 每日一题;

import 二叉树.TreeNode;

/**
 * @description:
 * @author: 小白白
 * @create: 2021-11-28
 **/

public class No700二叉搜索树中的搜索 {

    /**
     * 给定二叉搜索树（BST）的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。
     * 返回以该节点为根的子树。 如果节点不存在，则返回 NULL。
     * <p>
     * 例如，
     * 给定二叉搜索树:
     * <p>
     * 4
     * / \
     * 2   7
     * / \
     * 1   3
     * 和值: 2
     * 你应该返回如下子树:
     * <p>
     * 2
     * / \
     * 1   3
     * 在上述示例中，如果要找的值是 5，但因为没有节点值为 5，我们应该返回 NULL。
     */

    public TreeNode searchBST(TreeNode root, int val) {

        if (root == null) {
            return null;
        }

        int num = root.val;

        if (num == val) {
            return root;
        }

        if (num > val) {
            // 当前节点大了,去左边
            return this.searchBST(root.left, val);
        } else {
            return this.searchBST(root.right, val);
        }
    }

}
